# 函数的传参
def fun(a, b, c):  # a,b,c在函数的定义处，所以是形式参数
    print('a =', a)
    print('b =', b)
    print('c =', c)

fun(10, 20, 30)  # 函数调用时的参数传递，称为位置传参
print('---------------------')

lst = [11, 22, 33]
fun(*lst)  # 在函数调用时，将列表中的每个元素都转换为位置实参传入

print('---------------------')

fun(a=100, c=300, b=200)  # 函数的调用，所以是关键字实参
dic = {'a': 111, 'b': 222, 'c': 333}
fun(**dic)  # 在函数调用时，将字典中的键值对都转换为关键字实参传入
print('---------------------')

def fun4(a, b, *, c, d):  # 从*之后的参数，在函数调用时，只能采用关键字参数传递
    print('a=', a)
    print('b=', b)
    print('c=', c)
    print('d=', d)

fun4(a=10, b=20, c=30, d=40)  # 关键字实参传递
fun4(10, 20, c=30, d=40)  # 前两个参数，采用的是位置实参传递，而c,d采用的是关键字实参传递
